package main

import (
	"fmt"
	"sync"
	"time"
)

var wg sync.WaitGroup
// 添加互斥所
// var mutex sync.Mutex
// 添加读写锁
var mutex sync.RWMutex
// 写的方法
func write(){
	mutex.Lock()
	fmt.Println("执行写操作")
	time.Sleep(time.Second*2)
	mutex.Unlock()
	wg.Done()
}
// 读的方法
func read(){
	// 并行执行
	mutex.RLock()
	fmt.Println("--执行读操作")
	time.Sleep(time.Second*2)
	mutex.RUnlock()
	wg.Done()
}

func main() {
	// 添加20个协程
	for r:=0;r<10;r++{
		wg.Add(1)
		go read()//添加一个协程
	}
	for r:=0;r<10;r++{
		wg.Add(1)
		go write()//添加一个协程
	}
	wg.Wait()
} 